我在python中编写了一个简单的多进程和多线程代码,它在windows中工作,但在linux中不起作用(我在freebsd和ubuntu上测试过)
import threading
import time
from multiprocessing import Process
class Test(threading.Thread):
def run(self):
print('before sleep')
time.sleep(1)
print('after sleep')
def run_test():
Test().start()
if __name__ == "__main__":
Process(target=run_test, args=()).start()
这个程序只打印"睡觉前#34;然后退出。
睡觉不能在这里工作的原因? (它适用于Windows)更新:
我在这样的过程中使用了join(),但仍无效。
...
if __name__ == "__main__":
pr = Process(target=run_test, args=())
pr.start()
pr.join()
答案 0 :(得分:4)
应该在调用线程中使用join()来等待另一个线程:
def run_test():
t = Test()
t.start()
t.join()