【发布时间】:2018-11-05 21:11:51
【问题描述】:
这是我的代码:
from multiprocessing import Process, Manager, Value
from ctypes import c_char_p
def greet(string):
print('bob')
string.value = '1'
for i in range(100):
string.value = str(i)
if __name__ == '__main__':
manager = Manager()
string = manager.Value(c_char_p, "Hello")
process = Process(target=greet, args=(string,))
process.start()
for j in range(100):
print(string.value)
process.join()
input()
现在我希望代码打印如下内容:
Hello
1
1
1
4
4
5
5
6
7
因为,当然,我知道这两个循环可能都在运行并且速度不同。但是所有代码打印的是Hello,一百次,它甚至不会打印bob,直到代码结束并且我调用process.join()。就像greet 在我调用process.join() 之前不会运行。我已经阅读了Python multiprocessing not calling function,我正在从命令行运行代码。还是不行
首先,如果有人能告诉我为什么只在最后调用该函数,以及如何修复它,我会很高兴。如果可以修复,string 是否仍然可以被父进程和子进程读取?
提前致谢!
【问题讨论】:
标签: python python-3.x multiprocessing