在下面的示例代码中,我想恢复函数的返回值worker.我该怎么做呢?这个值存储在哪里?
示例代码:
import multiprocessing
def worker(procnum):
'''worker function'''
print str(procnum) + ' represent!'
return procnum
if __name__ == '__main__':
jobs = []
for i in range(5):
p = multiprocessing.Process(target=worker, args=(i,))
jobs.append(p)
p.start()
for proc in jobs:
proc.join()
print jobs
Run Code Online (Sandbox Code Playgroud)
输出:
0 represent!
1 represent!
2 represent!
3 represent!
4 represent!
[<Process(Process-1, stopped)>, <Process(Process-2, stopped)>, <Process(Process-3, stopped)>, <Process(Process-4, stopped)>, <Process(Process-5, stopped)>]
Run Code Online (Sandbox Code Playgroud)
我似乎无法在存储的对象中找到相关属性jobs.
提前谢谢,blz
对于C++,我们可以使用OpenMP进行并行编程; 但是,OpenMP不适用于Python.如果我想并行我的python程序的某些部分,我该怎么办?
代码的结构可以被认为是:
solve1(A)
solve2(B)
Run Code Online (Sandbox Code Playgroud)
哪里solve1和solve2是两个独立的功能.如何并行运行这种代码而不是按顺序运行以减少运行时间?希望可以有人帮帮我.首先十分感谢.代码是:
def solve(Q, G, n):
i = 0
tol = 10 ** -4
while i < 1000:
inneropt, partition, x = setinner(Q, G, n)
outeropt = setouter(Q, G, n)
if (outeropt - inneropt) / (1 + abs(outeropt) + abs(inneropt)) < tol:
break
node1 = partition[0]
node2 = partition[1]
G = updateGraph(G, node1, node2)
if i == 999:
print "Maximum iteration reaches"
print inneropt
Run Code Online (Sandbox Code Playgroud)
setinner和setouter是两个独立的函数.这就是我要平行的地方......
我试图让2个函数同时运行.
def func1():
print 'Working'
def func2():
print 'Working'
func1()
func2()
Run Code Online (Sandbox Code Playgroud)
有谁知道如何做到这一点?
我试图在Python中同时运行两个函数.我尝试了下面的代码,multiprocessing但是当我执行代码时,第二个函数只在第一个函数完成后启动.
from multiprocessing import Process
def func1:
#does something
def func2:
#does something
if __name__=='__main__':
p1 = Process(target = func1)
p1.start()
p2 = Process(target = func2)
p2.start()
Run Code Online (Sandbox Code Playgroud) 我正在运行测试,但我想同时运行2个函数.我有一个摄像头,我告诉它通过肥皂水移动,我然后通过SSH登录摄像机检查摄像机设置的速度.当我检查相机停止的速度时,没有速度可用.有没有办法可以让这些功能同时运行来测试相机的速度.示例代码如下:
class VerifyPan(TestAbsoluteMove):
def runTest(self):
self.dest.PanTilt._x=350
# Runs soap move command
threading.Thread(target = SudsMove).start()
self.command = './ptzpanposition -c 0 -u degx10'
# Logs into camera and checks speed
TestAbsoluteMove.Ssh(self)
# Position of the camera verified through Ssh (No decimal point added to the Ssh value)
self.assertEqual(self.Value, '3500')
Run Code Online (Sandbox Code Playgroud)
我现在尝试了如下所述的线程模块.该线程不与TestAbsoluteMove.Ssh()函数同步运行.我还需要其他任何代码才能完成这项工作.
我已经看过将参数放入线程语句中,该语句表明线程在Ssh()函数运行时运行.有谁知道在这个声明中输入什么?
对不起,如果我没有正确解释."SudsMove"功能可将摄像机和"Ssh"功能日志移动到摄像机中,并检查摄像机当前所处的速度.问题是,当"Ssh"功能登录相机时已停止.我需要两个函数并行运行,所以我可以在它仍在移动时检查相机速度.
谢谢
在我们的实验室中,我们具有具有以下特征的NVIDIA Tesla K80 GPU加速器计算:Intel(R) Xeon(R) CPU E5-2670 v3 @2.30GHz, 48 CPU processors, 128GB RAM, 12 CPU cores在Linux 64位下运行。
我正在运行以下代码,该代码GridSearchCV在将不同的数据帧集垂直追加到单个RandomForestRegressor模型系列中之后执行。我正在考虑的两个样本数据集可在此链接中找到
import sys
import imp
import glob
import os
import pandas as pd
import math
from sklearn.feature_extraction.text import CountVectorizer
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.linear_model import LogisticRegression
import matplotlib
from sklearn.model_selection import cross_val_score
import matplotlib.pyplot as plt
import numpy as np
from sklearn.ensemble import RandomForestRegressor, GradientBoostingRegressor
from sklearn.naive_bayes import GaussianNB
from sklearn.model_selection …Run Code Online (Sandbox Code Playgroud) 我想我一定错过了什么;这似乎是正确的,但我看不出有什么方法可以做到这一点。
假设你在 Python 中有一个纯函数:
from math import sin, cos
def f(t):
x = 16 * sin(t) ** 3
y = 13 * cos(t) - 5 * cos(2*t) - 2 * cos(3*t) - cos(4*t)
return (x, y)
Run Code Online (Sandbox Code Playgroud)
是否有一些内置功能或库提供某种类型的包装器,可以在函数执行期间释放 GIL?
在我的脑海中,我在想一些事情
from math import sin, cos
from somelib import pure
@pure
def f(t):
x = 16 * sin(t) ** 3
y = 13 * cos(t) - 5 * cos(2*t) - 2 * cos(3*t) - cos(4*t)
return (x, y)
Run Code Online (Sandbox Code Playgroud)
为什么我认为这可能有用?
因为目前只对 I/O 密集型程序有吸引力的多线程,一旦这些功能长期运行就会变得有吸引力。做类似的事情 …
这是一个后续问题:Python:如何并行运行python函数?
最小工作范例:
'''
Created on 06.05.2015
https://stackoverflow.com/questions/7207309/python-how-can-i-run-python-functions-in-parallel
'''
from multiprocessing import Process
import time
def runInParallel(*fns):
proc = []
for fn in fns:
p = Process(target=fn)
p.start()
proc.append(p)
for p in proc:
p.join()
def func1():
s=time.time()
print 'func1: starting', s
for i in xrange(1000000000):
if i==i:
pass
e = time.time()
print 'func1: finishing', e
print 'duration', e-s
if __name__ == '__main__':
s =time.time()
runInParallel(func1, func1, func1, func1, func1)
print time.time()-s
Run Code Online (Sandbox Code Playgroud)
哪个利用了(这正是我想要的):
func1:从1430920678.09开始
func1:起始于1430920678.53
func1:从1430920679.02开始
func1:起始于1430920679.57
func1:从1430920680.55开始
func1:完成1430920729.68
持续时间51.1449999809
func1:完成1430920729.78 …
我想要一个函数在主程序仍在运行时每 5 分钟运行一次。
我发现了多个关于如何使函数每隔几秒运行一次的帖子,但它们似乎对我不起作用。
这是我的程序:
from Read import getUser, getMessage
from Socket import openSocket, sendMessage
from Initialize import joinRoom, Console
from question import query_yes_no
from Settings import AIDENT
import string
import sched, time
import urllib.parse
import requests
import subprocess
import sys
import os
s = openSocket()
joinRoom(s)
while True:
try:
try:
readbuffer = s.recv(1024)
readbuffer = readbuffer.decode()
temp = readbuffer.split("\n")
readbuffer = readbuffer.encode()
readbuffer = temp.pop()
except:
temp = ""
for line in temp:
if line == "":
break
if …Run Code Online (Sandbox Code Playgroud) 我有一个脚本以下列方式获取DNS(CNAME,MX,NS)数据:
from dns import resolver
...
def resolve_dns(url):
response_dict = {}
print "\nResolving DNS for %s" % (url)
try:
response_dict['CNAME'] = [rdata for rdata in resolver.query(url, 'CNAME')]
except:
pass
try:
response_dict['MX'] = [rdata for rdata in resolver.query(url, 'MX')]
except:
pass
try:
response_dict['NS'] = [rdata for rdata in resolver.query(url, 'NS')]
except:
pass
return response_dict
Run Code Online (Sandbox Code Playgroud)
对于连续的URL,顺序调用此函数.如果可能的话,我想通过同时获取多个URL的数据来加快上述过程.
有没有办法完成上面的脚本为一批URL做的事情(可能返回一个dict对象列表,每个dict对应一个特定URL的数据)?
我想开发一个同时使用 Flask 和 httpd 的应用程序。Flask发布HTML相关文件,httpd发布本地文件中的文件。
它用于从 Flask HTML 浏览在 httpd 中发布的本地文件。
虽然Flask和httpd的端口号不同,但httpd服务器端似乎不起作用。连接到 httpd 服务器时发生连接被拒绝错误。
添加了问题的意图。
我想从脚本同时运行 Flask 的内置 Web 服务器和 HTTPServer。我只是想能够看到自己,而不是暴露在网络上。
我正在寻找一种可以使用 app.py 脚本完成而不使用 WSGI 的机制。
向问题添加了附加信息。
本题使用了 Flask 和 Python 的 HTTPServer,但是使用 NodeJS 的 HTTPServer 而不是 HTTPServer 似乎效果很好。(注释掉run())
如果可能的话,我想在不使用 NodeJS HTTPServer 的情况下用 Python 完成。
https://www.npmjs.com/package/http-server
C:\Users\User\Videos>http-server
Starting up http-server, serving ./
Available on:
http://127.0.0.1:8080
Hit CTRL-C to stop the server
...
Run Code Online (Sandbox Code Playgroud)
版本
Flask==1.0.2
Python 3.7
Run Code Online (Sandbox Code Playgroud)
我可以不使用以下代码启动每个服务器吗?
模板/index.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body> …Run Code Online (Sandbox Code Playgroud) python ×11
dns ×1
flask ×1
function ×1
gil ×1
gpu ×1
httpserver ×1
multi-gpu ×1
python-2.7 ×1
python-3.x ×1
tesla ×1
testing ×1