1.线程的介绍(理论部分) 1.1 进程线程分工 我们之前讲运行一个py文件,就是开启了一个进程,在内存中开辟一个进程空间,将必要的数据加载到这个进程空间,然后cpu在去调用这个进程的主线程去执行具体的代码.一个进程里默认包含一个主线程. 进程是资源单位,线程是执行单位. a = 1 b = 2 c = a b if a: print(666) def func(): print(a - b) return 123 func() print(111) 1.2 现实举例 工厂车间的例子. 1.3
场景: 经常会遇到下述问题:很多io busy的应用采取多线程的方式来解决,但这时候会发现python命令行不响应ctrl-c 了,而对应的java代码则没有问题: public class Test { public static void main(String[] args) throws Exception { new Thread(new Runnable() { public void run() { long start = System.currentTimeMillis();
1.定义标记变量:利用变量值的变化退出循环 # 第一种嵌套形式 a = [[1, 2, 3], [5, 5, 6], [7, 8, 9]] # init_i = 0 # init_j = 0 flag = True for i in range(3): for j in range(3): # print(i, j) if a[i][j] == 5: flag = False init_i = i init_j = j break if not flag: break print(init_i,
def thread_func(): while True: #do something #do something #do something t=threading.Thread(target = thread_func) t.start() # main thread do something # main thread do something # main thread do something 跑起来是没有问题的,但是使用ctrl + c中断的时候出问题了,主线程退出了,但子线程仍然
from threading import Thread from multiprocessing import Process def f1(): name = input('请输入名字') #EOFError: EOF when reading a line # print(name) # if __name__ == '__main__': # input('主进程输入') # p = Process(target=f1,) # p.start() # # print('主进程结束') #