我试图在两个脚本之间通过stdio传递python对象。 我想对同时传递的对象进行处理。 我的方法是调用print str(pickle.dumps(object))并从另一端的sys.stdout读取 在另一端使用pickle.load(eval(string))。 但是,第二个脚本会一直阻塞,直到它在继续之前读取了所有的stdin
我正在尝试编写简单的python脚本,这些脚本可以通过flexabley管道连接在一起。 我有一个生成模拟的脚本(PIMC)。 在模拟过程中的每一步,我都想将当前路径打印到另一个作者的scrips上,以便进行处理。 我已经有了一个管道系统,允许使用matplotlib绘制plott
我有两个程序,叫做togethr,有一个像这样的管道
$ 1.py | 2.py
1.py
#!/bin/env python
import sys
import pickle
import numpy as np
import time
for i in range(5):
x = i*np.ones(10)
print(str(pickle.dumps(x)))
time.sleep(0.5)
print(f'{i}',file=sys.stderr)
2.py
#!/bin/env python
import sys
import pickle
import numpy as np
for line in sys.stdin:
data = pickle.loads((eval(line.replace('\n',''))))
print(data)
预期产出:
0
[0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]
1
[1. 1. 1. 1. 1. 1. 1. 1. 1. 1.]
2
[2. 2. 2. 2. 2. 2. 2. 2. 2. 2.]
3
[3. 3. 3. 3. 3. 3. 3. 3. 3. 3.]
4
[4. 4. 4. 4. 4. 4. 4. 4. 4. 4.]
实际产量
0
1
2
3
4
[0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]
[1. 1. 1. 1. 1. 1. 1. 1. 1. 1.]
[2. 2. 2. 2. 2. 2. 2. 2. 2. 2.]
[3. 3. 3. 3. 3. 3. 3. 3. 3. 3.]
[4. 4. 4. 4. 4. 4. 4. 4. 4. 4.]
由于某种原因,2.py中的for循环被阻塞。 我已经使用了这个模式
for line in sys.stdin:
line = line.replace('\n','')
之前,它将同时运行
为什么它在这里被阻塞,而不是在其他用途? 有没有一种很好的(simpel)方法在python脚本之间传递numpy对象
目前没有回答
相关问题 更多 >
编程相关推荐