小编dor*_*vak的帖子

具有不同功能的Mulitprocess池

多进程工作池的大多数示例在不同的进程中执行单个函数

def foo(args):
   pass

if __name__ == '__main__':
   pool = multiprocessing.Pool(processes=30)
   res=pool.map_async(foo,args)
Run Code Online (Sandbox Code Playgroud)

有没有办法在池中处理两个不同的独立功能?那么你可以为foo()分配fe 15进程,为bar()分配15个进程,或者是一个绑定到单个函数的池?或者你必须手动为不同的功能创建不同的过程

 p = Process(target=foo, args=(whatever,))
 q = Process(target=bar, args=(whatever,))
 q.start()
 p.start()
Run Code Online (Sandbox Code Playgroud)

忘了工人池?

python pool multiprocessing

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

ORM与Graph-Databases如Python中的Neo4j

我想知道有一个ORM与图数据库(fe Neo4j)的解决方案(或需要).我跟踪关系(A与B相关,它与A通过C等相关,从而构建一个大图)实体(包括那些实体的附加属性)并需要将它们存储在DB中,我认为图形数据库完全适合这项任务.

现在,对于类似sql的数据库,我使用sqlalchemyśORM来存储我的对象,特别是因为我可以从数据库中检索对象并以pythonic样式使用它们(使用它们的方法等).

Neo4j或其他Graph-DB是否有任何对象映射解决方案,以便我可以在Graph-DB中存储和检索python对象并轻松使用它们?

或者你会编写一些函数或适配器,如python sqlite文档(http://docs.python.org/library/sqlite3.html#letting-your-object-adapt-itself)来检索和存储对象?

python orm neo4j graph-databases bulbs

17
推荐指数
3
解决办法
6379
查看次数

urllib.request.urlretrieve与代理?

不知怎的,我不能通过代理服务器下载文件,我不知道我做错了什么.我只是暂停了.有什么建议?

import urllib.request

urllib.request.ProxyHandler({"http" : "myproxy:123"})
urllib.request.urlretrieve("http://myfile", "file.file")
Run Code Online (Sandbox Code Playgroud)

urllib python-3.x

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

使用urllib2进行多处理无用?

我最近尝试加速一个小工具(使用urllib2向多处理模块发送请求到(非官方)twitter-button-count-url(> 2000 urls)并解析它的结果)(并且它工人池).我在这里阅读了几个关于多线程的讨论(与标准的非线程版本相比减慢了整个过程)和多处理,但我找不到一个(可能非常简单)问题的答案:

你可以通过多处理加速网址调用,还是像网络适配器这样的瓶颈?我不知道urllib2-open-method的哪一部分可以并行化,以及它应该如何工作......

编辑:这是我想要加速的请求和当前的多处理设置:

 urls=["www.foo.bar", "www.bar.foo",...]
 tw_url='http://urls.api.twitter.com/1/urls/count.json?url=%s'

 def getTweets(self,urls):
    for i in urls:
        try:
            self.tw_que=urllib2.urlopen(tw_url %(i))
            self.jsons=json.loads(self.tw_que.read())
            self.tweets.append({'url':i,'date':today,'tweets':self.jsons['count']})
        except ValueError:
            print ....
            continue
    return self.tweets 

 if __name__ == '__main__':
    pool = multiprocessing.Pool(processes=4)            
    result = [pool.apply_async(getTweets(i,)) for i in urls]
    [i.get() for i in result]
Run Code Online (Sandbox Code Playgroud)

python urllib2 multiprocessing gil

9
推荐指数
2
解决办法
5619
查看次数

SQLAlchemy原始sql vs表达式语言语句

通过SQLA-Expression-Language语句在MySQL-DB中插入多行时,fe

Foo.__table__.insert().execute([{'bar': 1}, {'bar': 2}, {'bar': 3}])
Run Code Online (Sandbox Code Playgroud)

与执行相同任务的"原始"sql语句相比,它极其缓慢,即

engine.execute("insert into foo (bar) values (1),(2),(3)")
Run Code Online (Sandbox Code Playgroud)

这是什么原因?SQLA不能生成单个批量插入语句,因此执行多个插入吗?由于orm的速度限制,我需要一种快速的方法一次添加几千行,但SQLA-Expression-Language-Version太慢了.那么,我需要自己编写原始sql吗?文档对此并不太清楚.

我使用ORM插件进行了速度测试,ORM具有预先分配的PK和SQLA批量插入(请参阅SQLA批量插入速度),如下所示(https://gist.github.com/3341940):

  • SqlAlchemy ORM:500条记录的总时间9.61418914795秒
  • 给出的SqlAlchemy ORM pk:500条记录的总时间9.56391906738秒
  • SqlAlchemy Core:500条记录的总时间为9.5362598896秒
  • SQLAlchemy RAW字符串执行:500条记录的总时间为1.233677秒

如您所见,三个版本之间几乎没有区别.只执行原始字符串插入,其中所有记录都包含在原始sql语句中明显更快.因此,对于快速插入,SQLA似乎是次优的.

bulkinsert sqlalchemy insert

9
推荐指数
1
解决办法
3420
查看次数

Python等价于R“拆分”功能

在R中,您可以根据另一个向量的因子来分割向量:

> a <- 1:10
  [1]  1  2  3  4  5  6  7  8  9 10
> b <- rep(1:2,5)
  [1] 1 2 1 2 1 2 1 2 1 2

> split(a,b)

   $`1`
   [1] 1 3 5 7 9
   $`2`
   [1]  2  4  6  8 10
Run Code Online (Sandbox Code Playgroud)

因此,根据另一个列表的值(根据因子的顺序)将一个列表分组(以python表示)。

除了itertools.groupby方法之外,在python中有什么方便的方法吗?

python grouping r

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

如何使用 selenium Web 驱动程序获取文本区域内容

我有以下元素(文本区域)。此文本区域的值不会出现在 html 代码中。但这将在页面加载时显示在网页中。如何使用 selenium 和 python 获取值。

<textarea id="query" class="textarea" cols="37" rows="30"></textarea>

html python python-2.7 selenium-webdriver

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

SQLite3和多处理

我注意到当我在多处理环境中使用它时,sqlite3不是真的有能力也不可靠.每个进程都会尝试将一些数据写入同一个数据库,以便多个线程使用连接.我尝试使用check_same_thread = False选项,但插入次数非常随机:有时它包含所有内容,有时不包括.我应该并行过程只有功能(从网络读取数据)的部分,堆栈它们的输出到一个列表,并把它们放到桌子一起还是有处理与sqlite的多连接的可靠的方法?

python sqlite multiprocessing

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