我正在学习如何使用Python多处理库.但是,当我浏览一些示例时,我最终在后台运行了许多python进程.
其中一个示例如下所示:
from multiprocessing import Process, Lock
def f(l, i):
l.acquire()
print 'hello world', i
l.release()
if __name__ == '__main__':
lock = Lock()
for num in range(10): # I changed the number of iterations from 10 to 1000...
Process(target=f, args=(lock, num)).start()
Run Code Online (Sandbox Code Playgroud)
现在这是我的'TOP'命令的屏幕截图:
88950 Python 0.0 00:00.00 1 0 9 91 1584K 5856K 2320K 1720K 2383M 82441 1 sleeping 1755113321 799
88949 Python 0.0 00:00.00 1 0 9 91 1584K 5856K 2320K 1720K 2383M 82441 1 sleeping 1755113321 798 …Run Code Online (Sandbox Code Playgroud) 我通过运行包含的示例启动了Solrcloud bin/solr -e cloud,在这种情况下,我设法启动了三个节点Solr云并创建了一个gettingstarted集合:
http://localhost:8983/solr/admin/collections?action=CREATE&name=gettingstarted&numShards=3&replicationFactor=2&maxShardsPerNode=2&collection.configName=gettingstarted
Run Code Online (Sandbox Code Playgroud)
我认为它带有一个在端口9983上运行的嵌入式zookeeper,因为我在启动云时看到了这个输出:
...
Starting up Solr on port 7574 using command:
bin/solr start -cloud -p 7574 -s "example/cloud/node2/solr" -z localhost:9983
Waiting up to 30 seconds to see Solr running on port 7574 [/]
...
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试使用SolrJ连接到SolrCloud时,它失败并显示错误消息:
Exception in thread "main" org.apache.solr.common.SolrException: Cannot connect to cluster at localhost:9983/solr: cluster not found/not ready
Run Code Online (Sandbox Code Playgroud)
任何人都可以帮我理解这里发生了什么?
在bash中是否有一个命令可以为您提供磁盘空间/硬盘驱动器号的总数.
我知道df命令非常有用,但输出太冗长:
# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda4 721G 192G 492G 29% /
tmpfs 129G 112K 129G 1% /dev/shm
/dev/sda1 194M 92M 93M 50% /boot
/dev/sdj1 917G 547M 870G 1% /data10
/dev/sdk1 917G 214G 657G 25% /data11
/dev/sdl1 917G 200M 871G 1% /data12
/dev/sdm1 917G 200M 871G 1% /data13
/dev/sdn1 917G 200M 871G 1% /data14
/dev/sdo1 917G 200M 871G 1% /data15
/dev/sdp1 917G 16G 855G 2% /data16
/dev/sdb1 917G 4.6G 866G 1% /data2 …Run Code Online (Sandbox Code Playgroud) 我使用以下命令为Spark开发了一个iPython笔记本:
ipython notebook --profile=pyspark
Run Code Online (Sandbox Code Playgroud)
我sc使用Python代码创建了一个SparkContext,如下所示:
import sys
import os
os.environ["YARN_CONF_DIR"] = "/etc/hadoop/conf"
sys.path.append("/opt/cloudera/parcels/CDH/lib/spark/python")
sys.path.append("/opt/cloudera/parcels/CDH/lib/spark/python/lib/py4j-0.8.1-src.zip")
from pyspark import SparkContext, SparkConf
from pyspark.sql import *
sconf = SparkConf()
conf = (SparkConf().setMaster("spark://701.datafireball.com:7077")
.setAppName("sparkapp1")
.set("spark.executor.memory", "6g"))
sc = SparkContext(conf=conf)
sqlContext = SQLContext(sc)
Run Code Online (Sandbox Code Playgroud)
我想spark.executor.memory在文件中更好地理解
每个执行程序进程使用的内存量,格式与JVM内存字符串相同
这是否意味着在一个节点上运行的所有进程的累积内存不会超过该上限?如果是这种情况,我应该将该数字设置为尽可能高的数字吗?
这里还列出了一些属性,是否有一些其他参数我可以从默认调整以提升性能.
谢谢!
我有一个 png 文件,我想删除所有非黑色像素(将非黑色像素转换为白色)。我怎样才能在Python中轻松地做到这一点?谢谢!
我有一个包含大量数据的文件。每一行都是一条记录。我正在尝试对整个文件做一些 ETL 工作。现在我正在使用标准输入逐行读取数据。很酷的一点是您的脚本可以非常灵活地与其他脚本和 shell 命令集成。我将结果写入标准输出。例如。
$ cat input_file
line1
line2
line3
line4
...
Run Code Online (Sandbox Code Playgroud)
我当前的 python 代码看起来像这样 - parse.py
import sys
for line in sys.stdin:
result = ETL(line) # ETL is some self defined function which takes a while to execute.
print result
Run Code Online (Sandbox Code Playgroud)
下面的代码是它现在的工作方式:
cat input_file | python parse.py > output_file
Run Code Online (Sandbox Code Playgroud)
我查看了 Python 的 Threading 模块,我想知道如果我使用该模块,性能是否会得到显着提高。
问题1:我应该如何规划每个线程的配额,为什么?
...
counter = 0
buffer = []
for line in sys.stdin:
buffer.append(line)
if counter % 5 == 0: # maybe assign 5 rows …Run Code Online (Sandbox Code Playgroud) 我想知道Python中是否已经为我后面描述的目标编写了一个函数.如果没有,那么最简单的实施方式是什么.我的代码已附上.
假设我的范围是1到999999999.给出这样的数字列表:
[9, 44, 99]
Run Code Online (Sandbox Code Playgroud)
它会回来
[(1,9), (10,44), (45,99), (100, 999999999)]
Run Code Online (Sandbox Code Playgroud)
如果作为限制的数字包含在输入数字中,它也应该处理.说输入是
[1, 9, 44, 999999999]
Run Code Online (Sandbox Code Playgroud)
回报应该是:
[(1,9), (10,44), (45, 999999999)]
Run Code Online (Sandbox Code Playgroud)
我可以写一个for循环与一些条件语句比较,但想知道是否有更"智能的方式".
一些可能有帮助的数据按摩:
points = [1, 9, 44, 99]
points = sorted(list(set(points + [1, 999999999])))
Run Code Online (Sandbox Code Playgroud)
更新信息:给予alecxe的最终信用,感谢您鼓舞人心的列表理解解决方案
l = sorted(list(set(points + [1, 999999999])))
[(l[i] + int(i != 0), l[i + 1]) for i in xrange(len(l) - 1)]
Run Code Online (Sandbox Code Playgroud)
你可以将所有这些放在一行中,但我认为这是不合情理的.
我正在尝试使用Scrapy收集域下的所有URL。我试图使用CrawlSpider从首页开始抓取他们的网站。对于每个页面,我想使用Xpath提取所有href。并以键/值对之类的格式存储数据。
密钥:当前网址值:此页面上的所有链接。
class MySpider(CrawlSpider):
name = 'abc.com'
allowed_domains = ['abc.com']
start_urls = ['http://www.abc.com']
rules = (Rule(SgmlLinkExtractor()), )
def parse_item(self, response):
hxs = HtmlXPathSelector(response)
item = AbcItem()
item['key'] = response.url
item['value'] = hxs.select('//a/@href').extract()
return item
Run Code Online (Sandbox Code Playgroud)
我定义我的AbcItem()如下所示:
从scrapy.item导入项目,字段
class AbcItem(Item):
# key: url
# value: list of links existing in the key url
key = Field()
value = Field()
pass
Run Code Online (Sandbox Code Playgroud)
当我像这样运行我的代码时:
nohup scrapy crawl abc.com -o output -t csv &
Run Code Online (Sandbox Code Playgroud)
机器人似乎开始爬行,我可以看到所有配置日志都在填充nohup.out文件,但是输出文件中没有信息。这是我要收集的内容,有人可以帮助我吗?我的机器人可能出了什么问题?
我从网上收集了一些时间序列数据,我得到的时间戳如下所示.
24 Jun
21 Mar
20 Jan
10 Dec
20 Jun
20 Jan
10 Dec
...
Run Code Online (Sandbox Code Playgroud)
有趣的是,数据中缺少年份,但是,所有记录都是有序的,您可以从记录中推断出年份并填写缺失的数据.所以输入后的数据应该是这样的:
24 Jun 2014
21 Mar 2014
20 Jan 2014
10 Dec 2013
20 Jun 2013
20 Jan 2013
10 Dec 2012
...
Run Code Online (Sandbox Code Playgroud)
在抬起袖子并开始for用nested逻辑编写一个循环之前,有一种简单的方法可以在R中用于解决缺失的一年.
非常感谢任何建议!
我目前正在使用 RStudio-server Linux redhat。RStudio-server 的一项不错的功能是我可以从服务器导出到Windows桌面。有谁知道导出下拉菜单背后的代码?
导出功能可以通过选项卡找到Files:
(More >> Export...)
我想使用代码来自动导出对象。我认为我应该能够使用该system函数执行此导出,但我遇到了麻烦。
谢谢你的帮助。
