相关疑难解决方法(0)

如何恢复传递给multiprocessing.Process的函数的返回值?

在下面的示例代码中,我想恢复函数的返回值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

python python-multiprocessing

143
推荐指数
9
解决办法
14万
查看次数

如何在Python中进行并行编程

对于C++,我们可以使用OpenMP进行并行编程; 但是,OpenMP不适用于Python.如果我想并行我的python程序的某些部分,我该怎么办?

代码的结构可以被认为是:

 solve1(A)
 solve2(B)
Run Code Online (Sandbox Code Playgroud)

哪里solve1solve2是两个独立的功能.如何并行运行这种代码而不是按顺序运行以减少运行时间?希望可以有人帮帮我.首先十分感谢.代码是:

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是两个独立的函数.这就是我要平行的地方......

python parallel-processing

129
推荐指数
5
解决办法
20万
查看次数

使2个函数同时运行

我试图让2个函数同时运行.

def func1():
    print 'Working'

def func2():
    print 'Working'

func1()
func2()
Run Code Online (Sandbox Code Playgroud)

有谁知道如何做到这一点?

python parallel-processing multithreading

39
推荐指数
4
解决办法
10万
查看次数

Python:同时执行多个功能

我试图在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)

python

20
推荐指数
4
解决办法
6万
查看次数

如何同时运行两个功能

我正在运行测试,但我想同时运行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"功能登录相机时已停止.我需要两个函数并行运行,所以我可以在它仍在移动时检查相机速度.

谢谢

python testing multithreading synchronization function

15
推荐指数
2
解决办法
1万
查看次数

Python:我们如何并行化python程序以利用GPU服务器?

在我们的实验室中,我们具有具有以下特征的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 gpu multi-gpu tesla python-3.x

5
推荐指数
1
解决办法
608
查看次数

有没有办法使用纯 python 为纯函数释放 GIL?

我想我一定错过了什么;这似乎是正确的,但我看不出有什么方法可以做到这一点。

假设你在 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 multiprocessing gil python-asyncio

5
推荐指数
1
解决办法
90
查看次数

在python中并行运行带有位置和可选参数的函数(跟进)

这是一个后续问题: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 …

python parallel-processing multiprocessing python-2.7

4
推荐指数
1
解决办法
1785
查看次数

运行主程序时每 5 分钟运行一次函数

我想要一个函数在主程序仍在运行时每 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)

python

4
推荐指数
1
解决办法
7722
查看次数

在python中批量/批量DNS查找?

我有一个脚本以下列方式获取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的数据)?

python dns

3
推荐指数
1
解决办法
1954
查看次数

如何使用 Http Server 为 Flask 提供服务

我想开发一个同时使用 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 httpserver flask

0
推荐指数
1
解决办法
1万
查看次数